#ifndef _CTL_GPIO_H
#define _CTL_GPIO_H


#include <iostream>
#include <fstream>
#include <string>
#include <unistd.h>  // for usleep
#include <sstream>
#define LOG_PRINT_DOMAIN  (0xFF00)
#include <hilog/log.h>
#define GPIO_RST (3*32+0*8+5)   //gpio3_a5

class CTL_GPIO {
    private:
        std::string gpioPath;
        int gpioNumber;
    
        // 写入值到指定文件
        bool writeValue(const std::string& filename, const std::string& value);
    
    public:
        CTL_GPIO(int number) : gpioNumber(number) {
            gpioPath = "/sys/class/gpio/gpio" + std::to_string(number) + "/";
        }
    
        // 导出GPIO
        bool exportGPIO();
    
        // 取消导出GPIO
        bool unexportGPIO();
    
        // 设置GPIO方向（"in" 或 "out"）
        bool setDirection(const std::string& direction) {
            return writeValue("direction", direction);
        }
    
        // 设置GPIO电平（"1" 或 "0"）
        bool setValue(const std::string& value) {
            return writeValue("value", value);
        }
    
        // 读取GPIO电平
        std::string getValue();
    };

#endif
